#include <iostream>
using namespace std;
#include <unistd.h>
#include <signal.h>

void handle(int signal)
{
    //当对应的信号被触发，内核会将对应的信号，传递给自定义方法
    cout << "处理" << signal << "号信号" << endl;
}

int main()
{
    //默认处理 --> 自定义处理：handle
    signal(SIGINT, handle); 
    
    while (true)
    {
        cout << "hello world" << endl;
        sleep(1);
    }
    return 0;
}

// #include <iostream>
// using namespace std;
// #include <string>
// #include <vector>
// #include <climits>
// #include <queue>
// struct Process
// {
// 	Process(std::string name, int comeTime, int runTime)
// 		: _name(name)
// 		, _comeTime(comeTime)
// 		, _runTime(runTime)
// 		, _remainTime(runTime)
// 		, _exist(true)
// 	{}

// 	std::string _name;
// 	int _comeTime;
// 	int _runTime;
// 	int _remainTime;
// 	bool _exist;
// };

// void Input(std::vector<Process>& arr, int n)
// {
// 	while (n--) {
// 		std::string name;
// 		int cometime = 0, runtime = 0;
// 		std::cin >> name >> cometime >> runtime;
// 		Process tmp(name, cometime, runtime);
// 		arr.push_back(tmp);
// 	}
// }

// int main()
// {
// 	std::vector<Process> arr;
// 	std::queue<Process> q;
// 	int n = 4;
// 	Input(arr, n);

// 	int curTime = 0;
// 	n = 4;
// 	//依次执行4个作业，直到全部完成
// 	while (n)
// 	{
// 		int min = INT_MAX;
// 		//1.选择一个符合时间的最小作业
// 		int index = 0;
// 		for (int i = 0; i < 4; i++)
// 		{
// 			//作业未完成，到达时间<=当前时间，且运行时间最少
// 			if (arr[i]._exist && arr[i]._comeTime <= curTime  && arr[i]._remainTime < min) {
// 				min = arr[i]._remainTime;
// 				index = i;
// 			}
// 		}

// 		Process& curProcess = arr[index];//确定当前要调度的作业,使用引用!!!
// 		curTime++;
// 		curProcess._remainTime--; //当前进程执行一秒

// 		//判断当前作业是否被执行完了
// 		if (curProcess._remainTime == 0)
// 		{
// 			curProcess._exist = false;
// 			q.push(curProcess);
// 			n--;
// 		}
// 	}
// 	int count = 0;
// 	while (q.size()) {
// 		std::cout << q.front()._name;
// 		q.pop();
// 		if (count != 3) {
// 			std::cout << " ";
// 		}
// 		count++;
// 	}
// 	return 0;
// }

// struct Process
// {
// 	char Name[12];
// 	int comeTime;
// 	int runTime;
// 	int flag;
// 	int cycleTime;
// };

// int main()
// {
// 	std::vector<Process> arr;

// 	int n = 4;
// 	while(n--)
// 	{
// 		struct Process p;
// 		scanf("%s%d%d",p.Name,&p.comeTime,&p.runTime);
// 		p.flag = 0;
// 		arr.push_back(p);
// 	}

// 	int time = 0;
// 	int curTime = 0;
// 	for(int i = 0; i < 4; i++)
// 	{
// 		int min = INT_MAX;
// 		int index = 0;
// 		for(size_t j=0; j <arr.size(); j++)
// 		{
// 			//1.当前作业未被调度
// 			//2.当前时间，该作业已经来了
// 			//3.当前作业最短
// 			if(arr[j].flag == 0 && arr[j].comeTime <= curTime && arr[j].runTime < min )
// 			{
// 				min = arr[j].runTime;
// 				index = j;
// 			}
// 		}
// 		curTime += arr[index].runTime;
// 		arr[index].flag = 1;
// 		time += min;
// 		arr[index].cycleTime = time - arr[index].comeTime;
// 	}

// 	for(size_t j=0; j <arr.size(); j++)
// 	{
// 		printf("%d",arr[j].cycleTime);
// 		if(j != arr.size() - 1)
// 			printf(" ");
// 	}

// 	return 0;
// }